﻿using System;
using System.IO;

namespace Holdem.Interfaces.Configuration
{
	public interface IHoldemIsolatedStorageFileStream : IDisposable
	{
		bool CanRead
		{
			get;
		}

		bool CanWrite
		{
			get;
		}

		bool CanSeek
		{
			get;
		}

		long Length
		{
			get;
		}

		long Position
		{
			get;
			set;
		}

		string Name
		{
			get;
		}

		void Dispose(bool disposing);
		void Flush();

		void SetLength(long value);

		int Read(byte[] buffer, int offset, int count);
		int ReadByte();

		long Seek(long offset, SeekOrigin origin);

		void Write(byte[] buffer, int offset, int count);

		void WriteByte(byte value);

		IAsyncResult BeginRead(byte[] buffer, int offset, int numBytes, AsyncCallback userCallback, object stateObject);
		int EndRead(IAsyncResult asyncResult);

		IAsyncResult BeginWrite(byte[] buffer, int offset, int numBytes, AsyncCallback userCallback, object stateObject);

		void EndWrite(IAsyncResult asyncResult);
	}
}
